package ClasesExtras;

import static android.provider.BaseColumns._ID;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class handlerDb extends SQLiteOpenHelper {

	static String nombreBaseDatos = "proceso"; // db name

	// tablas
	static String nombreTabla1 = "lotes";
	static String nombreTabla2 = "lotes2";
	static String nombreTabla3 = "direcciones";
	static String nombreTabla4 = "actividades";
	static String nombreTabla5 = "ChecFQ_Traza";
	static String nombreTabla6 = "ProductoTerminado";

	// columnas
	static String columNombreLote = "nombre_lote";
	static String columIdEmpleado = "id_empleado";
	static String columIdProceso = "id_proceso";
	static String columIdProducto = "id_producto";
	static String columNombreProducto = "nombre_producto";
	static String columAddress = "address";
	static String columActividades = "actividad";
	static String columChequeo = "chequeo";

	// Sentencia SQL para crear la tabla 1
	String queryCreateTable1 = "CREATE TABLE " + nombreTabla1 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columNombreLote
			+ " TEXT, " + columIdEmpleado + " INTEGER, " + columIdProceso
			+ " INTEGER, " + columIdProducto + " INTEGER, "
			+ columNombreProducto + " TEXT)";

	String queryCreateTable2 = "CREATE TABLE " + nombreTabla2 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columNombreLote
			+ " TEXT, " + columIdEmpleado + " INTEGER, " + columIdProceso
			+ " INTEGER, " + columIdProducto + " INTEGER, "
			+ columNombreProducto + " TEXT)";

	String queryCreateTable3 = "CREATE TABLE " + nombreTabla3 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columAddress + " TEXT)";

	String queryCreateTable4 = "CREATE TABLE " + nombreTabla4 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columActividades
			+ " TEXT)";
	String queryCreateTable5 = "CREATE TABLE " + nombreTabla5 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columChequeo + " TEXT)";

	String queryCreateTable6 = "CREATE TABLE " + nombreTabla6 + " (" + _ID
			+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + columChequeo + " TEXT)";

	String queryDropTable1 = "DROP TABLE IF EXISTS " + nombreTabla1;
	String queryDropTable2 = "DROP TABLE IF EXISTS " + nombreTabla2;
	String queryDropTable3 = "DROP TABLE IF EXISTS " + nombreTabla3;
	String queryDropTable4 = "DROP TABLE IF EXISTS " + nombreTabla4;
	String queryDropTable5 = "DROP TABLE IF EXISTS " + nombreTabla5;
	String queryDropTable6 = "DROP TABLE IF EXISTS " + nombreTabla6;

	public int numTuplasTb1;

	public handlerDb(Context context) {
		super(context, nombreBaseDatos, null, 1);

	}

	@Override
	public void onCreate(SQLiteDatabase db) {

		db.execSQL(queryCreateTable1);
		db.execSQL(queryCreateTable2);
		db.execSQL(queryCreateTable3);
		db.execSQL(queryCreateTable4);
		db.execSQL(queryCreateTable5);
		db.execSQL(queryCreateTable6);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

		db.execSQL(queryDropTable1);
		db.execSQL(queryDropTable2);
		db.execSQL(queryDropTable3);
		db.execSQL(queryDropTable4);
		db.execSQL(queryDropTable5);
		db.execSQL(queryDropTable6);
		this.onCreate(db);

	}

	/* metodo que ingresa los datos a la tabla 1 */
	public void registrar(String numeroLote, int idEmpleado, int idProceso,
			int columIdProducto, String nombreProducto) {

		ContentValues valores = new ContentValues();
		valores.put("nombre_lote", numeroLote);
		valores.put("id_empleado", idEmpleado);
		valores.put("id_proceso", idProceso);
		valores.put("id_producto", columIdProducto);
		valores.put("nombre_producto", nombreProducto);

		this.getWritableDatabase().insert(nombreTabla1, null, valores);
	}

	/* metodo que ingresa los datos a la tabla 2 */
	public void registrarTabla2(String numeroLote, int idEmpleado,
			int idProceso, int columIdProducto, String nombreProducto) {

		ContentValues valores = new ContentValues();
		valores.put("nombre_lote", numeroLote);
		valores.put("id_empleado", idEmpleado);
		valores.put("id_proceso", idProceso);
		valores.put("id_producto", columIdProducto);
		valores.put("nombre_producto", nombreProducto);

		this.getWritableDatabase().insert(nombreTabla2, null, valores);
	}

	/* metodo que ingresa los datos a la tabla 3 */
	public void registrarTabla3(String direccion) {

		ContentValues valores = new ContentValues();
		valores.put("address", direccion);

		this.getWritableDatabase().insert(nombreTabla3, null, valores);
	}

	/* metodo que ingresa los datos a la tabla 4 */
	public void registrarTabla4(String activivad) {

		ContentValues valores = new ContentValues();
		valores.put("actividad", activivad);

		this.getWritableDatabase().insert(nombreTabla4, null, valores);
	}

	/* metodo que ingresa los datos a la tabla 5 */
	public void registrarTabla5(String chequeo) {

		ContentValues valores = new ContentValues();
		valores.put("chequeo", chequeo);

		this.getWritableDatabase().insert(nombreTabla5, null, valores);
	}

	/* metodo que ingresa los datos a la tabla 6 */
	public void registrarTabla6(String chequeo) {

		ContentValues valores = new ContentValues();
		valores.put("chequeo", chequeo);

		this.getWritableDatabase().insert(nombreTabla6, null, valores);
	}

	/* metodo que devuelve el valor solicitado de la tabla1 */
	public String leer(String columna) {
		String result = null;
		String columnas[] = { "_ID", columNombreLote, columIdEmpleado,
				columIdProceso, columIdProducto, columNombreProducto };
		Cursor c = this.getReadableDatabase().query(nombreTabla1, columnas,
				null, null, null, null, null);
		int nombreLote, idEmpleado, idProceso, idProducto, nombreProducto;

		nombreLote = c.getColumnIndex(columNombreLote);
		idEmpleado = c.getColumnIndex(columIdEmpleado);
		idProceso = c.getColumnIndex(columIdProceso);
		idProducto = c.getColumnIndex(columIdProducto);
		nombreProducto = c.getColumnIndex(columNombreProducto);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columNombreLote)) {
				result = c.getString(nombreLote);
				return result;
			} else {

				if (columna.equals(columIdEmpleado)) {
					result = c.getString(idEmpleado);
					return result;
				} else {
					if (columna.equals(columIdProceso)) {
						result = c.getString(idProceso);
						return result;
					} else {
						if (columna.equals(columIdProducto)) {
							result = c.getString(idProducto);
							return result;
						} else {

							if (columna.equals(columNombreProducto)) {
								result = c.getString(nombreProducto);
								return result;
							} else {
								return result;
							}
						}
					}

				}
			}
		} else {
			return result;
		}

	}

	/* metodo que devuelve el valor solicitado de la tabla2 */
	public String leerTabla2(String columna) {
		String result = null;
		String columnas[] = { "_ID", columNombreLote, columIdEmpleado,
				columIdProceso, columIdProducto, columNombreProducto };
		Cursor c = this.getReadableDatabase().query(nombreTabla2, columnas,
				null, null, null, null, null);
		int nombreLote, idEmpleado, idProceso, idProducto, nombreProducto;

		nombreLote = c.getColumnIndex(columNombreLote);
		idEmpleado = c.getColumnIndex(columIdEmpleado);
		idProceso = c.getColumnIndex(columIdProceso);
		idProducto = c.getColumnIndex(columIdProducto);
		nombreProducto = c.getColumnIndex(columNombreProducto);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columNombreLote)) {
				result = c.getString(nombreLote);
				return result;
			} else {

				if (columna.equals(columIdEmpleado)) {
					result = c.getString(idEmpleado);
					return result;
				} else {
					if (columna.equals(columIdProceso)) {
						result = c.getString(idProceso);
						return result;
					} else {
						if (columna.equals(columIdProducto)) {
							result = c.getString(idProducto);
							return result;
						} else {
							if (columna.equals(columNombreProducto)) {
								result = c.getString(nombreProducto);
								return result;
							} else {
								return result;
							}
						}
					}

				}
			}
		} else {
			return result;
		}

	}

	/* metodo que devuelve el valor solicitado de la tabla3 */
	public String leerTabla3(String columna) {
		String result = null;
		String columnas[] = { "_ID", columAddress };
		Cursor c = this.getReadableDatabase().query(nombreTabla3, columnas,
				null, null, null, null, null);
		int address;

		address = c.getColumnIndex(columAddress);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columAddress)) {
				result = c.getString(address);
				return result;
			} else {
				return result;
			}
		} else {
			return result;
		}

	}

	/* metodo que devuelve el valor solicitado de la tabla4 */
	public String leerTabla4(String columna) {
		String result = null;
		String columnas[] = { "_ID", columActividades };
		Cursor c = this.getReadableDatabase().query(nombreTabla4, columnas,
				null, null, null, null, null);
		int actividades;

		actividades = c.getColumnIndex(columActividades);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columActividades)) {
				result = c.getString(actividades);
				return result;
			} else {
				return result;
			}
		} else {
			return result;
		}

	}

	/* metodo que devuelve el valor solicitado de la tabla5 */
	public String leerTabla5(String columna) {
		String result = null;
		String columnas[] = { "_ID", columChequeo };
		Cursor c = this.getReadableDatabase().query(nombreTabla5, columnas,
				null, null, null, null, null);
		int chequeo;

		chequeo = c.getColumnIndex(columChequeo);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columChequeo)) {
				result = c.getString(chequeo);
				return result;
			} else {
				return result;
			}
		} else {
			return result;
		}

	}

	/* metodo que devuelve el valor solicitado de la tabla6 */
	public String leerTabla6(String columna) {
		String result = null;
		String columnas[] = { "_ID", columChequeo };
		Cursor c = this.getReadableDatabase().query(nombreTabla6, columnas,
				null, null, null, null, null);
		int chequeo;

		chequeo = c.getColumnIndex(columChequeo);

		numTuplasTb1 = c.getCount();
		c.moveToLast();

		if (numTuplasTb1 != 0) {
			if (columna.equals(columChequeo)) {
				result = c.getString(chequeo);
				return result;
			} else {
				return result;
			}
		} else {
			return result;
		}

	}

	/* elimina la fila de tabla 1 */
	public int eliminar() {

		return this.getWritableDatabase().delete(nombreTabla1, null, null);

	}

	/* elimina la fila de tabla 2 */
	public int eliminarTabla2() {

		return this.getWritableDatabase().delete(nombreTabla2, null, null);
	}

	/* elimina la fila de tabla 3 */
	public int eliminarTabla3() {

		return this.getWritableDatabase().delete(nombreTabla3, null, null);
	}

	/* elimina la fila de tabla 4 */
	public int eliminarTabla4() {

		return this.getWritableDatabase().delete(nombreTabla4, null, null);
	}

	/* elimina la fila de tabla 5 */
	public int eliminarTabla5() {

		return this.getWritableDatabase().delete(nombreTabla5, null, null);
	}

	/* elimina la fila de tabla 6 */
	public int eliminarTabla6() {

		return this.getWritableDatabase().delete(nombreTabla6, null, null);
	}

	/* abrir */
	public void abrir() {
		this.getWritableDatabase();
	}

	/* cerrar */
	public void cerrar() {
		this.close();

	}

}
